def solve():
n,k=list(map(int,input().split()))
a=list(map(int,input().split()))
val=0
for i in range(n):
if i==n-1:
val+=k*(10**a[i])
break
diff=10**(a[i+1]-a[i])
if k<diff-1:
val+=k*(10**a[i])
break
if i==0:
k-=diff-2
val+=diff-2
else:
k-=diff-1
val+=(diff-1)*(10**a[i])
print(val+1)
t = int(input())
for i in range(t):
solve()
#include<bits/stdc++.h>
using namespace std;
#define IOS std::ios::sync_with_stdio(false); cin.tie(NULL);cout.tie(NULL);
#define pb push_back
#define pf push_front
#define mod 1000000007ll //998244353ll
#define lld long double
#define ll long long int
void solve(){
ll n,k;
cin>>n>>k;
k++;
vector<int>v(n,0);
for(int i=0;i<n;i++)cin>>v[i];
sort(v.begin(),v.end());
ll ans=0;
for (int i=0;i<n && k>0 ;i++){
ll d=pow(10,v[i]);
if(i != n-1){
ll diff=v[i+1]-v[i];
ll x=pow(10,diff);
x-=1;
ll y=min(k,x);
k-=y;
ans+=d*y;
}
else{
ans+=k*d;
k=0;
}
}
cout<<ans<<endl;
}
int main()
{
IOS
int t;
cin>>t;
while(t--)
solve();
return 0;
}
1589C - Two Arrays | 1510K - King's Task |
126B - Password | 462A - Appleman and Easy Task |
839C - Journey | 622A - Infinite Sequence |
659C - Tanya and Toys | 1266A - Competitive Programmer |
234C - Weather | 1332C - K-Complete Word |
525C - Ilya and Sticks | 1555C - Coin Rows |
1324C - Frog Jumps | 715A - Plus and Square Root |
774D - Lie or Truth | 1186D - Vus the Cossack and Numbers |
505B - Mr Kitayuta's Colorful Graph | 1324D - Pair of Topics |
157B - Trace | 34C - Page Numbers |
279A - Point on Spiral | 1294D - MEX maximizing |
447A - DZY Loves Hash | 23B - Party |
63D - Dividing Island | 1203E - Boxers |
1547F - Array Stabilization (GCD version) | 358A - Dima and Continuous Line |
1385C - Make It Good | 651A - Joysticks |